﻿// Extension-Methodes für Entity und Dto zum Konvertieren von einem ins andere
// Hier soll auch die Security eingreifen, deshalb kein https://github.com/AutoMapper/AutoMapper/wiki/Getting-started
// oder so was (obwohl: Vielleicht ginge es auch damit) 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using g42.Entities;
using g42.Dto;

namespace g42.MapEntitiesDto
{
  public static class EntityDtoExtensions
  {
    // Sample
    public static SampleEnt ToSampleEnt(this Sample x)
    {
      return new SampleEnt { Id = x.Id, Nr = x.Nr, Bezeichnung = x.Bezeichnung};
    }
    public static Sample ToSample(this SampleEnt x)
    {
      return new Sample { Id = x.Id, Nr = x.Nr, Bezeichnung = x.Bezeichnung };
    }

    // Mandant
    public static MandantEnt ToMandantEnt(this Mandant x)
    {
      return new MandantEnt { Id = x.Id, Nr = x.Nr, Name = x.Name};
    }
    public static Mandant ToMandant(this MandantEnt x)
    {
      return new Mandant { Id = x.Id, Nr = x.Nr, Name = x.Name };
    }

    // Strasse
    public static StrasseEnt ToStrasseEnt(this Strasse x)
    {
      return new StrasseEnt { Id = x.Id, Nr = x.Nr, Laenge = x.Laenge, Name = x.Name};
    }
    public static Strasse ToStrasse(this StrasseEnt x)
    {
      return new Strasse { Id = x.Id, Nr = x.Nr, Laenge = x.Laenge, Name = x.Name };
    }

    // Adresse
    public static AdresseEnt ToAdresseEnt(this Adresse x)
    {
      return new AdresseEnt { Id = x.Id, Nr = x.Nr, Strasse = x.Strasse.ToStrasseEnt(), HausNr1 = x.HauseNr1 };
    }
    public static Adresse ToAdresse(this AdresseEnt x)
    {
      return new Adresse { Id = x.Id, Nr = x.Nr, Strasse = x.Strasse.ToStrasse(), HauseNr1 = x.HausNr1 };
    }

    // Person
    public static PersonEnt ToPersonEnt(this Person x)
    {
      return new PersonEnt { Id = x.Id, Nr = x.Nr, Adresse = x.Adresse.ToAdresseEnt(), Md = x.Md.ToMandantEnt(), Name = x.Name, Vorname = x.Vorname };
    }
    public static Person ToPerson(this PersonEnt x)
    {
      return new Person { Id = x.Id, Nr = x.Nr, Adresse = x.Adresse.ToAdresse(), Md = x.Md.ToMandant(), Name = x.Name, Vorname = x.Vorname };
    }

  }
}
